package javabook.ch06;

/*
 * instanceof 연산자 
	instanceof 연산자란 하나의 어떤 객체가 특정한 어떤 클래스 또는 인터페이스에 의해서 
	생성된 객체인지 아닌지를 판단하기 위하여 사용하는 연산자이며 참인 경우에 true, 거짓인 경우에 false를 반환한다. 
	instanceof 연산자의 일반 형식은 다음과 같다.        

 */
	class sub1 {
	  int i, j;
	}
	class sub2 extends sub1{
	  int k;
	}
	class sub3 extends sub2 {
	  int l;
	}
	
	class InstanceOf {
		public static void main(String args[]) {
			
	    sub1 a = new sub1();
	    sub2 b = new sub2();
	    sub3 c = new sub3();
	    
	    if(a instanceof sub1) 
	      System.out.println("a는 sub1 클래스의 객체");
	    
	    if(b instanceof sub2) 
	      System.out.println("b는 sub2 클래스의 객체");
	    
	    if(c instanceof sub3) 
	      System.out.println("c는 sub3 클래스의 객체");
	    
	    if(c instanceof sub1) 
	        System.out.println("c는 sub1 클래스의 객체 : 형변환");
	        // 객체 c는 클래스 A가 가지고 있는 모든 정보를 제공할 수 있다
	        // 형변환이 성공한다
	    
	      if(a instanceof sub3)  
	        System.out.println("a는 sub3 클래스의 객체 : 형변환");
	      
	      else
	        System.out.println("a는 sub3 클래스의 객체가 아님 : 형변환 불가");
	        // 객체 a는 클래스 C가 가지고 있는 모든 정보를 제공할 수 없다
	        // 형변환이 실패
	    }
	  } 
